-----------------------------------------------------------------------------

-----------------------------------------------------------------------------

  TI-RAM.TXT        A Programmer's Guide to the TI-85 RAM       Version 0.8

                        Copyright (c) 1995 Dan Eble

-----------------------------------------------------------------------------

-----------------------------------------------------------------------------



This document is unrefined, but you have it anyway.  Use it how you will.

If you have questions, contact me at Dan.Eble@CommLink.org.

Additions and revisions are welcome.

Feel free to distribute this document in unmodified form.



Table of Interesting Data



     0681: character lookup table for something

6    0C6B: 05, "xStat"

6    0C71: 05, "yStat"

128  1439: table for calculating transcendental functions

REAL 1F42: bad number

REAL 1F4C: same as 1F42

REAL 1F56: same as 1F42

REAL 1F60: 0

REAL 1F6A: 1

     41E5: page 7: pointers to error strings

     422B: page 7: error strings

     42DD: page 1: pointers to catalog entries for alphabet

112  4DC8: page 1: bitmap similar to menu box

250  4E38: page 1: 124 pointers to menus (indexed by secondary menu type byte)

1878 4F32: page 1: menu data structures (page 1)

                   1 byte for something

                   1 byte for number of pointers following

                   n pointers

     5688: page 1: menu items (See listing above)

     695C: page 1: mode screen strings (see above)

     6D7F: page 7: pointers to BASIC commands in token order

     6EFC: page 5: link error strings

     6F7D: page 7: pointers to BASIC commands in alphabetical order

     70E7: page 7: list of BASIC commands

     71B2: page 5: variable type strings

     723E: page 1: normal character set (01-E0)

     7268: page 5: zoom variable names (Func, Param, Pol, DifEq, ZRCL)

     76D4: page 7: pointers to variable names

     773E: page 7: variable name strings

     7775: page 5: "fnIntErr"

     7869: page 7: more pointers to variable names

     7936: page 1: character set for menus (00-D7)

     7D7A: page 4: system variable and constant names (cannot store to these)

     7F4F: page 7: filler FF's 

     7FFF: page 7: ROM version byte

                   57h: 3.0A

                   8Eh: 4.0

                   3Dh: 6.0

                   97h: 8.0

Byte 8000: translated scancode of key currently pressed, but

           00 if 01BEh (get key) has been called

Byte 8001: translated scancode of key currently pressed

Byte 8002: same as 8001, but FFh is more than one key is pressed

Byte 8003: countdown until key repeat (only runs for arrows and DEL)

Byte 8004: bit 2 set = key down now

Byte 8006: scancode of last key pressed

Byte 8007: contrast (00-1F)

Byte 8008: ?? timer for cursor blink?

Byte 800C: current row of text cursor (0-7)

Byte 800D: current column of text cursor (0-14h)

Byte 800E: current character at cursor position

Word 8074: ? pointer

8    8078: 8x8 bitmap of top right corner of screen.

Byte 8080: counter for busy indicator

Byte 8081: bitmap for busy indicator

10   8082: 1 Byte type of variable found afterward

.   1 Byte length of name of variable to locate

           8 Bytes of name plus padding (left over from last name)

Word 80C6: pointer to current home-screen program (untokenized length-data form)

Word 80C8: pointer to the top of user memory - 16

Word 80CA: ?           

Word 80CC: number of used user memory bytes ?

Word 80CE: ?

Word 80D0: pointer to Ans

Word 80D2: pointer to last variable accessed

Word 80D4: ? pointer ? 

Word 80D6: pointer to final VAT entry

168  80DF: text screen memory (8*21 = 168 bytes)

Byte 8187: secondary cursor row

Byte 8188: secondary cursor column

Byte 8189: ??? more secondary data (copied from 8B2F [screen_scroll_start])

Byte 818A: ??? more secondary data (copied from 8358)

Byte 818B: ??? more secondary data (copied from (834B) AND 16)

Byte 818C: data for international character symbol

           0 = nothing, 1 = accent, 2 = grave, 3 = circumflex, 4 = dieresis

Word 81BE: memory checksum from 8BF7 to FA6F

Word 81D1: ?

Word 81E1: ? page 1 pointer to a menu structure? 

Byte 81E3: \_ info about memory page?, what to do (run code, fetch submenu)

Byte 81E4: /  for 81E1?

Word 81E5: pointer to last sub-menu structure (page 1)

           one byte for something

           one byte for number of pointers to follow

           n words for n pointers

Byte 81E7: \_ info for 81E5?

Byte 81E8: / 

Word 81ED: ? pointer (81E1)

Word 81F0: pointer to custom pointers (maybe more general pointer to current

           menu structure)

           (There's a 09 before the 0F. What do it do?)

Word 81F4: ? pointer to last menu? (look at 5664)

Word 81FC: ? pointer (81F0) (pointer to pointer to custom pointers???)

Word 820B: ? pointer (81E1) (another one??)

40   8254: user menu string buffer -- 5 sets of data (one for each menu key)

           1 byte: 00h = not used, 80h = used (on menu)

           6 bytes: menu item

           1 byte: 00h

     827C: buffer for name of last error

Byte 8333: x coordinate of menu text cursor

Byte 8334: y coordinate of menu text cursor

Byte 8337: last error number

     8346: A table of bitmapped system data.  IY usually points here.

     838E: REALS. range vars.

1024 8641: graphics screen memory (64*128/8 = 1024 bytes)

REAL 8A41: used for making random numbers

REAL 8A4B: used for making random numbers

Word 8A5F: pointer to last entry code (tokenized data form)

Word 8A61: ? pointer to code of last program executed (maybe not)

Word 8A6B: secondary text memory (for page-flipping technique?)

Word 8B19: pointer to current home-screen program (untokenized data form)

Word 8B1B: pointer to last entry program (tokenized length-data form)

Word 8B1D: subtract (8B1B) from this to get number of free bytes 

Word 8B1F: ? same as 8B1D ?

Word 8B25: pointer to last byte of free memory (end of VAT - 1)

Word 8B27: pointer to first byte of free memory

Word 8B29: a number (see 8BF7)

Byte 8B2F: first row of screen scrolling window (0-7)

Byte 8B30: last row of screen scrolling window (1-8)

Byte 8B3A: fixed-point decimal place (FFh for floating point)

32   8BB1: custom menu pointers ( 1 byte  = 09 = ??)

....( 1 byte  = 0F = # of items)

....(15 words = pointers)

....( 1 byte  = 00)

Word 8BE1: pointer to REAL+10 (what significance?)

Word 8BEB: pointer to last byte of free memory (end of VAT - 1)

REAL 8BF7: the REAL equivalent of the word at (8B29)

     8C01: the start of input memory

Loc  FA6F: end of VAT (it's built upside-down)

1024 FC00: real bitmapped video memory



Table of Bitmapped Data



(IY+00) or (8346)

 bit 3 set: keystroke available

 bit 2 set: Degree \_ angle display mode

       res: Radian /

(IY+02) or (8348)

 bit 7 set: DifEq \

 bit 6 set: Param  \_ graph

 bit 5 set: Pol    /  modes

 bit 4 set: Func  /

(IY+05) or (834B)

 bit 4 set: use "insert" cursor

 bit 3 set: print normal font in inverse color, or XOR menu font with screen

       res: print normal font in normal color, or overwrite menu font 

 bit 1 set: print 7 rows of menu font

       res: print 6 rows

(IY+08) or (834E)

 bit 0 set: dxNDer \_ method of differentiation

       res: dxDer1 /

(IY+0A) and (IY+0B), or (8350) and (8351)

 bits 7-6: 11= SphereV \

           01= CylV     >- vector display modes

           00= RectV   /

 bit 5 set: PolarC \_ coordinate display mode

       res: RectC  /

 bits 4-2: 100= Bin \

           010= Oct  \_ number

           001= Hex  /  bases

           000= Dec / 

 bits 1-0: 11= Eng    \

           01= Sci     >- number display modes

           00= Normal /

(IY+0D) or (8353)

 bit 2 set: scroll text window when necessary

 bit 1 set: affect text memory as well as screen

(IY+12) or (8358)

 bit 5 set: use "alpha" cursor

 bit 4 set: use "Alpha" cursor

 bit 3 set: use "2nd" cursor

 bit 1 set: there are valid data in the 8-byte buffer at (8078)

